Le projet Samba est surtout connu pour le partage de fichiers selon le protocol SMB dévellopé par Microsoft. La version 4 de ce logiciel apporte la fonctionnalité supplémentaire d'un contrôleur de domaine Active Directory (Active Directory Domain Controller - AD DC). Cette fonctionnalité inclue en natif les services DNS, LDAP, Kerberos, RPC et SMB 3.0 + distribution des GPO.
Samba AD DC permet de créer un DC compatible avec les produits de Microsoft allant de Windows Server 2000, 2003, 2008 et 2012. Cependant, toutes les fonctionnalitées avancées ne sont pas encore implémentées. Selon les cas, probablement au sein des PME, Samba AD DC pourrait parfaitement remplacer ces produits.
Samba en version 4 fut premièrement disponible via le paquet samba4. Ce paquet est disponible pour toutes les versions d'Ubuntu allant de Lucid (10.04) à Trusty (14.04 LTS). Cependant, il s'agit là d'un paquet de transition.qui ne sera pas conservé sur le long terme. Samba en version 4 devient la version de base du paquet samba à partir de Trusty (14.04 LTS). Il est donc conseillé aux utilisateurs de Trusty et des versions qui suiveront de ne plus utiliser le paquet samba4 mais bien le paquet samba. Sous Trusty, samba est fourni en version 4.1.3.
Samba en version 3 et 4 ne devraient pas co-exister sur une même machine. Si Samba est déjà installé, vous pouvez en vérifier sa version en tapant :
samba -V
La documentation qui suit est basée sur Ubuntu Trusty avec samba en version 4.1.3. L'ensemble des manipulations qui suivent requiert des droits administrateurs (local sur la machine ou domaine).
Le projet Samba recommande d'installer quelques paquets avant d'installer Samba 4 (cfr OS Requirements) :
sudo apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev \ libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev \ dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl
sudo apt-get install acl attr dnsutils krb5-user
Est-ce que krb5-user est vraiment utile sur un DC ?
L'installation de krb5-user va installer via le mécanisme de dépendance krb5-config. Ce paquet va demander d'introduire premièrement le nom du royaume : EXAMPLE.COM, et deuxièmement, si la résolution dns de _kerberos._tcp.example.com ne donne pas de résultat, d'introduire les informations relatives aux serveurs kerberos du royaume ainsi qu'au serveur d'administration de kerberos.
Le paquet krb5-user va, entre autre, apporter les commandes *kinit* et *klist* qui permettent d'interroger et tester le serveur kerberos. Ce paquet n'installe pas un serveur kerberos.
Afin de bénéficier de l'ensemble des fonctionnalités de Samba, il est nécessaire d'activer les ACL et les attributs étendus (user_xattr) sur les partitions concernées par Samba. Pour ce faire, il faut ajouter dans le fichier /etc/fstab les options acl, user_xattr et barrier=1 aux partitions en question. L'option barrier=1 protège les transactions tdb contre la corruption des fichiers (notamment sam.ldb) lors les coupure d'électricité (ou autre crash système).
Exemple d'une partition dans le ficher /etc/fstab
UUID=8059560e-4a78-445b-a363-b3c197b4c7ea / ext4 defaults,acl,user_xattr,barrier=1 0 1
Après avoir modifié le fichier /etc/fstab, il faut redémarrer la machine ou remonter la partition pour que la modification soit effective
sudo reboot
ou
sudo mount -o remount /
Le noyau d'Ubuntu Trusty provenant des dépôts a bien les options XATTR, SECURITY et POSIX_ACL pour les systèmes de fichier ext3 et ext4. Toute autre situation nécessitera de vérifier que ces options aient bien été activées pour le système de fichier choisi lors de la compilation du noyau.
Cette solution a l'avantage d'être très simple à mettre en oeuvre.
sudo apt-get install samba
Cette solution s'adresse aux personnes qui connaissent déjà bien le sujet et qui savent ce qu'apporte une version plus récente que celle disponible dans les dépôts. N'hésitez pas à vous reporter à la page suivante : https://wiki.samba.org/index.php/Build_Samba
wget http://www.samba.org/samba/stable/samba-4.1.4.tar.gz tar xvzf samba-4.1.4.tar.gz cd samba-4.1.4 ./configure make && make install
En résumé, ces quelques lignes permettent de télécharger, décompresser, compiler et installer samba à partir des sources.
Il peut être utile (voir indispensable) d'installer les "samba-tool" :
sudo apt-get install samba-common-bin
ou pour les version avant Trusty :
sudo apt-get install samba4-common-bin
Ceci constitue l'étape unique qui va créer le premier domaine dans la forêt.
Les autres possibilités sont :
:: Si vous souhaitez configurer le serveur Samba comme un contrôleur de domaine additionnel dans un domaine existant, référez-vous au guide Joining a Windows Domain Controller as an additional DC in a Domain.
Le reste de cette documentation se basera sur les paramètres suivants :
| Nom du serveur | ubndc01 |
| Nom de domaine | example.com |
| Royaume (realm) | EXAMPLE.COM |
| Nom de NetBIOS | example |
| Adresse IP | 192.168.1.11 |
| Rôle du serveur | DC (contrôleur de domaine) |
Préalablement à l'iniatilisation de Samba, il faut supprimer ou renommer le fichier smb.conf
sudo mv --backup=t /etc/samba/smb.conf /etc/samba/smb.conf.old
Et arrêter le service samba.
sudo service samba stop
Vérification
sudo service samba stop
Si les services nmbd et smbd sont toujours actifs, il faut les arrêter.
sudo service smbd stop sudo service nmbd stop
L'initialisation va créer plusieurs fichiers type base de données ainsi que le fichier smb.conf
sudo samba-tool domain provision --use-rfc2307 --interactive
L'option –use-rfc2307 active les attributs Posix et crée les informations NIS dans l'AD. Ceci permet d'administrer les UIDs/GIDs et autres paramètres UNIX (visibles sous l'onglet "Unix attributes" de l'ADUC). Il est plus simple de l'activer durant l'initialisation plutôt que par la suite. De plus, même si vous n'en avez pas (encore) besoin, ceci n'impacte pas votre installation.
L'option –interactive va poser quelques questions pour la création du domaine. Pour connaître, l'ensemble des options relatives à l'initialisation, il est recommandé d'exécuter
samba-tool domain provision --help
Si les valeurs satisfont, il ne faut alors que les valider par ENTER
Realm [EXAMPLE.COM]: Domain [EXAMPLE]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [192.168.10.1]: Administrator password: Retype password:
Notes importantes sur cette initialisation :
rm -rf /var/lib/samba/private/*
Redémarer la machine.
sudo reboot
Le service Samba se gère via Upstart. Par exemple, pour connaître son status :
sudo initctl status samba-ad-dc samba-ad-dc start/running, process 1129
Pour connaître l'ensemble des services démarrés par samba :
sudo samba-tool processes Service: PID ----------------------------- dnsupdate 959 nbt_server 933 rpc_server 932 cldap_server 942 winbind_server 949 kdc_server 943 samba 0 dreplsrv 948 kccsrv 956 ldap_server 938
On y voit, dans l'ordre, les services suivants DNS, NetBIOS, RPC, Connection-less LDAP (CLDAP), WinBind, KDC (Kerberos Distribution Center), Replication (d?), KCC (Knowledge Consistency Checker), LDAP. Tous ces services sont configurés soit dans /etc/samba/smb.conf, soit dans les fichiers /var/lib/samba/private/*.
Si vous prévoyez la migration depuis un domain Samba NT4 existant vers un domaine Samba AD, reportez-vous à Classicupgrade HowTo (http://wiki.samba.org/index.php/Samba4/samba-tool/domain/classicupgrade/HOWTO)
Vérifiez tout d'abord que vous avez la bonne version de smbclient en tapant :
/usr/local/samba/bin/smbclient --version
Cela doit retourner un version commençant par "Version 4.x" Exécutez ensuite la ligne suivante pour lister les partages définis sur votre serveur:
/usr/local/samba/bin/smbclient -L localhost -U%
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.x.y)
le retour doit être similaire aux informations ci-dessus. Les partages netlogon et sysvol sont par défaut sur un serveur Active Directory et crée dans votre fichier de configuration smb.conf lors de la configuration initiale (provisioning) ou mise a jour. Si la commande échoue, redémarrer samba :
killall samba /usr/local/samba/sbin/samba
Pour vérifier que l'authentification fonctionne, vous devez essayer de vous connecter au partage netlogon en utilisant le compte Administrateur crée durant le configuration initial (provisioning). Le retour doit être similaire aux informations ci-dessous:
smbclient //localhost/netlogon -UAdministrator% -c 'ls' Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y] . D 0 Tue Dec 11 20:00:00 2012 .. D 0 Tue Dec 11 20:00:00 2012
Une configuration fonctionnelle du DNS est essentielle pour assurer le bon fonctionnement de Samba et de l'AD. Sans les bons paramètres, Kerberos ne fonctionnera pas, entraînant le non-fonctionnement de services de base! Une configuration hâtive, non fonctionnelle, vous fera perdre du temps pour définir la cause des dysfonctionnement du DNS. Pour gérer les paramètres DNS, vous pouvez utilisez l'utilitaire samba-tool (voire l'outil MMC DNS de Windows). Pour plus d'information, consulter DNS Administration et administrer Samba AD depuis windows
Pour plus d'information sur la configuration du serveur DNS et trouver celle qui répond à vos besoins, consultez la page DNS
Lors de l'initialisation, il vous est proposé quatre choix comme "DNS Backend" : SAMBA_INTERNAL (par défaut), BIND9_FLATFILE (obsolète?), BIND9_DLZ (si vous mettez en place un serveur DNS avec BIND), NONE (si, c'est possible!).
Par défaut, Samba utilise son propre serveur DNS interne et aucune configuration supplémentaire n'est nécessaire.
Il est souvent nécessaire de définir le serveur DNS vers lequel renvoyer les demandes qui ne sont pas du ressort du DNS interne, pour cela ajouter :
dns forwarder = {adresse IP du serveur DNS vers lequel transmettre}
dans votre fichier smb.con puis redémarrer Samba.
Nota : cette ligne peut avoir été renseignée durant l'initialisation (provisioning) !
Pour que le serveur DNS interne puisse fonctionner, le port 53 udp/tcp ne doit pas être utilisé par d'autres programmes (tel qu'un autre serveur DNS, Dnsmasq, etc…). Vous aurez des erreurs dans le logfile si Samba ne peut utiliser le port 53, telle que :
Failed to bind to 0.0.0.0:53 TCP - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
Pour vérifier quel programme est sur le port 53, exécuter avec les droit d'administrateur :
netstat -tunpe | grep ":53"
Si vous choisissez BIND9_DLZ lors de votre initialisation (provisioning), référez-vous au wiki the Bind as DNS backend HowTo pour connaître les instructions à suivre. Vous trouverez aussi plus d'informations sur le wiki pour la configuration de BIND en général et comment le configurer pour l'utiliser avec Samba AD. Si vous avez initialiser avec le DNS interne, vous pouvez basculer vers BIND lorsque cela est nécessaire.
Pour résoudre les recherches local de DNS, il est nécessaire de modifier le fichier /etc/resolv.conf. L'exemple suivant doit être suffisant pour résoudre le DNS correctement (adapter au domaine et adresse IP dans votre environnement):
domain samdom.example.com nameserver 192.168.1.1
Si vous ne connaissez pas le fonctionnement de Kerberos, voici un lien pour vous éclairer :
http://irp.nain-t.net/doku.php/320kerberos:start
La configuration de Kerberos se trouve dans le fichier krb5.conf. Ce fichier doit être déposé dans le répertoire /etc
Lors de l'initialisation, ce fichier est créé et déposé dans /usr/loca/samba/share/setup/krb5.conf. Son contenu par défaut est :
[libdefaults]
default_realm = ${REALM}
dns_lookup_realm = false
dns_lookup_kdc = true
Note : si vous avez oublié votre nom de "royaume", exécutez
/usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm
Le test le plus simple est d'utiliser la commande kinit comme cela:
kinit administrateur@SAMDOM.EXAMPLE.COM
Note: vous devez saisir le nom de "royaume" en lettres majuscules !
Note: selon la distribution, kinit peut juste retourner un prompt, mais sous certaines distributions le retour est du type
Warning: Your password will expire in x days on ...
(Attention: votre mot de passe expirera dans x jours, le… )
Pour vérifier quelle version de Kerberos est utilisée, et qu'elle vous retourne un ticket, taper :
klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: administrator@SAMDOM.EXAMPLE.COM Valid starting Expires Service principal 02/10/13 19:39:48 02/11/13 19:39:46 krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
Si ni kinit ni klist n'existe sur votre système, référez-vous à la page Samba_4_OS_Requirements ou au début de ce document.
Vous pouvez aussi tester Kerberos à partir d'un poste client, mais vous devez tout d'abord configurer le fichier krb5.conf and resolve.conf du poste client comme illustré ci-dessus.
Note: Si vous utilisez un poste client derrière un serveur NAT vous devez ajoter la ligne suivante dans le fichier krb5.conf de controleur de domaine:
<code>[kdc]
check-ticket-addresses = false<code>
Note: Si l'initialisation (provisionning) génère un mot de passe et que vous le perdez, vous pouvez utilisez samba-tool user setpassword administrator en administrateur pour le réinitialiser.
Contributeur principal : bcag2